use std::thread;
#[allow(unused_imports)]
use std::time::Duration;
#[allow(unused_imports)]
use rand::Rng;
// Rust 通过 spawn 函数提供了创建本地操作系统（native OS）线程的机制，
// 该函数的参数是一个通过值捕获变量的闭包（moving closure）。
static NTHREADS: i32 = 10;
#[test]
fn test_thread() {
    // 提供一个 vector 来存放所创建的子线程（children）
    let mut children = vec![];

    for i in 0..NTHREADS {
        // 启动（spin up）另一个线程
        children.push(thread::spawn(move||{
            // let mut rng = rand::thread_rng();
            // let x = rng.random_range(0..5);
            // thread::sleep(Duration::from_secs(x));
            // println!("Float: {}", rng.gen_range(0.0..10.0));
            println!("this is thread number {}",i)
        }))
    }

    for child in children {
        // 等待线程结束。返回一个结果
        let _ = child.join();
    }
}